home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_08_02
/
8n02087a
< prev
next >
Wrap
Text File
|
1990-02-28
|
4KB
|
122 lines
Listing 3
/*-----------------------------------------------------------------------
| This program is an example of how the C arrays of |
| structures generated by Screen Machine can be displayed. |
| |
| Note: |
| Screen Machine always generates the structure "_scrn". If |
| you are including more than one screen generated by Screen |
| Machine in a given program, only one declaration of the |
| "_scrn" structure should be copied into the program. |
-----------------------------------------------------------------------*/
/*various include files*/
#include <stdio.h>
#include <graph.h>
#include <bios.h>
#include <dos.h>
#define FALSE 0
#define TRUE 1
#define VIDEO 0x10 /*software interrupt 0x10 */
#define WRITE_ATTR_CHAR 9 /*function 9 */
void disp_screen(struct _scrn *, unsigned short );
struct _scrn {
char *chrs;
char cw;
char rw;
char att;
};
struct _scrn screen_mainmenu[]={
{"╔════════════════════════════════════╗",21,6,31},
{"║ ║",21,7,31},
{"║ Grade Book Main Menu ║",21,8,31},
{"║ ║",21,9,31},
{"║ 1) Scan Grades ║",21,10,31},
{"║ 2) Edit/View Grades ║",21,11,31},
{"║ 3) Print Grade Book ║",21,12,31},
{"║ 4) Scan Names ║",21,13,31},
{"║ 5) Print Rosters ║",21,14,31},
{"║ 6) Other Print Functions ║",21,15,31},
{"║ 7) Set Teacher Information ║",21,16,31},
{"║ 8) Drop Lowest Grade ║",21,17,31},
{"║ 9) Exit ║",21,18,31},
{"║ ║",21,19,31},
{"║ For help, press <Alt><H>. ║",21,20,31},
{"╚════════════════════════════════════╝",21,21,31},
{"\0",0,0,0}
};
long color_back_grnd= 1; /*all screens will use a blue
background*/
main()
{
disp_screen(screen_mainmenu, TRUE); /*clear screen and then display the
screen defined by screen_mainmenu*/
}
/*-----------------------------------------------------------
| disp_screen - Use ptr passed to array of structures |
| containing &text; col; row; and attribute. |
| Use BIOS int 10h function 9 to display the |
| data. |
| |
| If cls_flag is TRUE, clear the screen before|
| displaying the data. When clearing the |
| screen, use the attribute defined in the |
| variable color_back_grnd |
| |
------------------------------------------------------------*/
void disp_screen(p, cls_flag)
struct _scrn *p;
unsigned short cls_flag;
{
char wcol;
char * wsptr;
union REGS inregs, outregs;
if (cls_flag)
{
_setbkcolor(color_back_grnd);
_clearscreen(_GCLEARSCREEN);
}
inregs.h.ah = WRITE_ATTR_CHAR; /*print char and attribute*/
inregs.x.cx = 1; /*print 1 char*/
while ( *(p->chrs) )
{
wsptr=p->chrs; /*get ptr to string*/
wcol=p->cw;
inregs.h.bh = 0; /*video page 0*/
inregs.h.bl = p->att; /*attribute to use */
while (inregs.h.al = *wsptr++) /*char to print*/
{
/*position the cursor*/
_settextposition( (short) p->rw, (short) wcol++);
int86 ( VIDEO, &inregs, &outregs ); /*print with BIOS*/
}
p++;
}
}